perm filename PAT.LSP[NET,KMC] blob
sn#142408 filedate 1975-01-25 generic text, type T, neo UTF8
(DEFPROP FILEAREA
T
SPECIAL)
(DEFPROP INFILE
T
SPECIAL)
(DEFPROP OUTFILE
T
SPECIAL)
(DEFPROP MESSNO
T
SPECIAL)
(DEFPROP ERROR
(LAMBDA (L) (PRINT L))
EXPR)
(DEFPROP LPRINT
(LAMBDA (L) (MAPC (QUOTE PRINC) (REVERSE L)))
EXPR)
(DEFPROP SENDMESS
(LAMBDA (L)
(PROG (A CHAN)
(SETQ A (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE OUTPUT) FILEAREA OUTFILE))) NIL))
(COND ((NOT A) (ERROR (QUOTE "CANT SEND OUTPUT")) (EXIT)))
(OUTC CHAN NIL)
(SETQ MESSNO (ADD1 MESSNO))
(PRINT MESSNO)
(PRINT L)
(OUTC NIL T)))
EXPR)
(DEFPROP WAITONMESS
(LAMBDA (N FLAG)
(PROG (A)
(PROG (&V)
LOOP (COND ((NOT (SETQ A (MAILIN N)))
(SETQ &V (PROG NIL (COND (FLAG (PRINTSTR (QUOTE "WAITING...")))) (SLEEP 12))))
(T (RETURN &V)))
(GO LOOP))
(RETURN A)))
EXPR)
(DEFPROP MAILIN
(LAMBDA (N)
(PROG (A CHAN)
(SETQ A (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE INPUT) FILEAREA INFILE))) NIL))
(COND ((NOT A) (RETURN NIL)))
(INC CHAN NIL)
(SETQ A (READ))
(COND ((NOT (EQUAL A N)) (INC NIL T) (RETURN NIL)))
(SETQ A (READ))
(INC NIL T)
(RETURN A)))
EXPR)
(DEFPROP CHECKMAIL
(LAMBDA NIL
(PROG (A B C D CHAN)
(SETQ A (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE INPUT) FILEAREA INFILE))) NIL))
(COND ((NOT A) (ERROR (QUOTE "CANT RESTART -- FILE WAS DELETED"))))
(INC CHAN NIL)
(SETQ A (READ))
(SETQ B (READ))
(INC NIL T)
(SETQ C (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE INPUT) FILEAREA OUTFILE))) NIL))
(COND ((NOT C) (ERROR (QUOTE "CANT RESTART -- FILE WAS DELETED"))))
(INC CHAN NIL)
(SETQ C (READ))
(SETQ D (READ))
(INC NIL T)
(RETURN (LIST A B C D))))
EXPR)
(DEFPROP SLEEP
(LAMBDA (N) (SLEEP2 N))
EXPR)
(DEFPROP SLEEP2
(LAMBDA (N)
(PROG (&V &L1 &UPPER1)
(SETQ &L1 1)
(SETQ &UPPER1 N)
LOOP (COND ((*GREAT &L1 &UPPER1) (GO EXIT)))
(SETQ I &L1)
(SETQ &L1 (ADD1 &L1))
(SETQ &V (PRINT I))
(GO LOOP)
EXIT (SETQ I NIL)
(RETURN &V)))
EXPR)
(DEFPROP RUN
(LAMBDA NIL
(PROG (A RESTART CH L)
(SETQ FILEAREA (QUOTE (NET KMC)))
(SETQ INFILE (QUOTE OUT))
(SETQ OUTFILE (QUOTE IN))
(SETQ MESSNO 0)
(PRINC (QUOTE "ARE YOU STARTING A CONVERSATION
OR RESTARTING AFTER A SYSTEM CRASH?[S OR R]"))
(SETQ RESTART (READ))
(SETQ RESTART (NOT (EQUAL RESTART (QUOTE S))))
(COND ((NOT RESTART)
(PROG NIL
(PRINTSTR
(QUOTE
"
IF THE SYSTEM GOES DOWN,
YOU MAY HAVE TO RETYPE YOUR LAST QUESTION.
WE WILL BE READY TO GO IN A MINUTE.
")) (SETQ A (WAITONMESS 1 T))
(COND ((NOT (EQUAL A (QUOTE (RRRRREADY)))) (ERROR (QUOTE "INITIALIZATION NO GOOD"))))
(SENDMESS (QUOTE (RRRRREADY)))
(PRINTSTR (QUOTE "
END INPUT WITH TWO ALTMODES.
")))) (T (PROG NIL
(SETQ L (CHECKMAIL))
(COND ((EQUAL (CAR L) (CADDR L))
(PRINTSTR (QUOTE "LAST OUTPUT: "))
(LPRINT (CADDDR L))
(PRINTSTR (QUOTE "WAITING..."))
(SETQ RESTART NIL))
(T (PRINTSTR (QUOTE "LAST INPUT: ")) (LPRINT (CADR L))))
(SETQ MESSNO (CADDR L)))))
(PROG (&V)
LOOP (COND (T (SETQ &V
(PROG NIL
(COND
((NOT RESTART)
(PROG NIL
(SETQ L (WAITONMESS (ADD1 MESSNO) NIL))
(TERPRI NIL)
(PRINTSTR (QUOTE "INTERVIEWER:"))
(LPRINT L))))
(SETQ RESTART NIL)
(TERPRI (TERPRI NIL))
(SETQ L NIL)
(PRINTSTR (QUOTE "READY:"))
(PROG NIL
LOOP (COND
((NOT
(AND (NOT (EQ (SETQ CH (READCH)) CR))
(NOT (EQ CH LF))
(NOT (EQ CH ALTMODE))))
(GO LOOP))))
(TERPRI
(PROG (&V)
LOOP (SETQ &V (SETQ L (CONS CH L)))
(COND
((AND (EQ (SETQ CH (READCH)) ALTMODE)
(EQ (SETQ CH (READCH)) ALTMODE))
(RETURN &V))
(T (GO LOOP)))))
(SENDMESS L))))
(T (RETURN &V)))
(GO LOOP))))
EXPR)
(DEFPROP RESTART
(LAMBDA NIL (PROG (FILEAREA INFILE OUTFILE) (RUN)))
EXPR)